package edu.scsw.tech.unit2;

// 素数：指除了1和本身之外，不能被其他正整数整除的数。
// 素数计数器：统计101~200之间的素数个数。
// 考查循环的使用
public class PrimeNumbers {

    public static void main(String[] args) {
        int count = 0; // 素数计数器
        boolean[] isPrime = new boolean[200]; // 布尔数组，标记每个数字是否为素数

        // 初始化布尔数组，默认所有数字都是素数
        for (int i = 0; i < isPrime.length; i++) {
            isPrime[i] = true;
        }

        // 1不是素数，因此将其标记为false
        isPrime[0] = false;
        isPrime[1] = false;

        System.out.println("101~200之间的素数有：");

        // 检查每个数字是否为素数
        for (int i = 2; i < isPrime.length; i++) {
            if (isPrime[i]) {
                // 如果是素数，检查是否有其他数字能被它整除
                for (int j = 2; j * i < isPrime.length; j++) {
                    isPrime[j * i] = false; // 标记i的倍数为非素数
                }
            }
        }

        // 遍历布尔数组，输出101到200之间的素数
        for (int i = 101; i < isPrime.length; i++) {
            if (isPrime[i]) {
                System.out.println(i);
                count++;
            }
        }

        System.out.println("101~200之间共有 " + count + " 个素数。");
    }
}